package List_etc;

import Collection_etc.Person;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * @author Jimmy Zhan WORKSTATION
 * @date 2023/3/21 13:07
 * 说明：
 */

public class ListTest {
    @Test
    public void test1(){
        List list = new ArrayList();

        // add(Object obj)
        list.add("AA");
        list.add(123); // 自动装箱
        list.add("BB");
        list.add(new Person("Jimmy", 24));
        System.out.println(list.toString());

        // add(int index, Object ele)
        list.add(2, "CC");
        System.out.println(list);

        // addAll(int index, Collection eles)
        List integers = Arrays.asList(1, 2, 3);
        list.addAll(1, integers);
        System.out.println(list);
    }


    // List 删除数据
    @Test
    public void test2() {
        List list = new ArrayList();

        // add(Object obj)
        list.add("AA");
        list.add(123); // 自动装箱
        list.add("BB");
        list.add(new Person("Jimmy", 24));

        list.remove(2); // 输入参数为int时，指的是索引，而不是自动装箱的元素2
        System.out.println(list);
        list.remove(Integer.valueOf(2)); // 手动装箱，把2包装成Integer对象
        System.out.println(list);

    }

    // 遍历 List 的三种方式
    @Test
    public void test3() {
        List list = new ArrayList();

        // add(Object obj)
        list.add("AA");
        list.add(123); // 自动装箱
        list.add("BB");
        list.add(new Person("Jimmy", 24));

        // 遍历方式1：使用迭代器
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

        // 遍历方式2：使用增强for循环
        for (Object obj: list) {
            System.out.println(obj);
        }

        // 遍历方式3：使用常规for循环
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }
}
